#if !defined(__APP__GPIO__)
#define __APP__GPIO__
#include "main.h"
#include "FreeRTOS.h"
#include "task.h"
#include "stdbool.h"
#include "app.h"
// 重新定义 LED 的状态为枚举类型
enum {
    LED_STATUS_OFF = 0,
    LED_STATUS_ON,
    LED_STATUS_QUICK_BLINK,
	LED_STATUS_NETWORK,
};

// 声明全局变量来存储当前 LED 状态

extern int currentLedStatus;

typedef struct gpio_handle
{
	void (*init_gpio)(void);
	void (*hc595Send4Byte)(uint32_t byte);
	void (*hc4067Chose1Channel32)(uint8_t channel);
	int start_netconfig_flag;
	// int spurious;
}GPIO_HANDLE;

extern GPIO_HANDLE gpio_handle;

void set_spurious_count(void);

void gpio_set_level(uint8_t u8Port, uint16_t u16Pin, int num);

void hc595Send4Byte(uint32_t byte);

void hc4067Chose1Channel32(uint8_t channel);

uint8_t Get_LED_State(void);

void Set_LED_State(uint8_t state);

void led_task(void *pvParameters);

void App_init_gpio(void);

void led_twinkle(void);

void KeyRow1_Init(void);

void gpio_timer(void *pvParameters);

void create_freertos_tasks(void);

void App_ExTPB7_Init(void);

void App_Tmr2_Init(void);

// void Timer_Init(void);

#endif // __APP__GPIO__
